<?php

class Application_Model_ProyectosDC extends Sgit_Model
{
    protected $_name = 'gestion_proyectos';
    protected $_primary = 'id';






    public function GetProyecto($id)
    {
        return $this->GetProyectos(array(), $id);
    }




    public function GetProyectos($values = array(), $id = null)
    {

        $select = $this->getAdapter()->select();


        $subquery1 =    new Zend_Db_Expr('(SELECT SUM(importe) FROM gestion_proyectos_economico WHERE id_proyecto=gestion_proyectos.id)');
        $sql_level=     new Zend_Db_Expr("(SELECT round(abs(AVG(DATEDIFF(fecha,CURDATE()))/COUNT(*)),2) FROM gestion_tareas where id_proyecto=gestion_proyectos.id)");
        $sql_numTareas= new Zend_Db_Expr("(SELECT count(*) from gestion_tareas where id_proyecto=gestion_proyectos.id)");
        

        $select->from(array('gestion_proyectos'), array('*', 'importe_comprometido' => $subquery1,'level' => $sql_level,'numTareas'=>$sql_numTareas));
        $select->joinLeft('zonas', 'zonas.id = gestion_proyectos.id_zona', array('zona' => 'nombre','codigo_zona'=>'ini'));
        $select->joinLeft('usuarios', 'usuarios.id = gestion_proyectos.jefe1', array('responsable' => 'nombre'));

        if (!is_null($id))
        {
            $select->where("gestion_proyectos.id= ?", $id);
        } else
        {

            //filter1
            if ($values['id_departamento'])
                $select->where('gestion_proyectos.id_departamento= ?', $values['id_departamento']);
            //filter2
            if ($values['id_zona'])
                $select->where('gestion_proyectos.id_zona= ?', $values['id_zona']);
            //filter3
            if ($values['jefe1'])
                $select->where('gestion_proyectos.jefe1= ?', $values['jefe1']);
            //filter4
            if ($values['estado'])
                $select->where('gestion_proyectos.estado= ?', $values['estado']);
            //filter5
            if ($values['control_economico'])
                $select->where('gestion_proyectos.control_economico= ?', $values['control_economico']);
             //filter6
            if ($values['prl'])
                $select->where('gestion_proyectos.prl= ?', $values['prl']);
             //filter7
            if ($values['gma'])
                $select->where('gestion_proyectos.gma= ?', $values['gma']);
                
            if ($values['anio'])
                $select->where('gestion_proyectos.anio= ?', $values['anio']); 
                
            if ($values['aprobacion'])
                $select->where('gestion_proyectos.aprobacion= ?', $values['aprobacion']); 
                
            if ($values['categoria'])
                $select->where('gestion_proyectos.categoria= ?', $values['categoria']); 
   


            $select->order('id DESC');
        }


        $rows = $this->getAdapter()->fetchAll($select);


        if (is_null($id))
            return $rows;
        else
            return $rows[0];


    }
    
    public function GetProyectosCapex($values = array(), $id = null)
    {

        $select = $this->getAdapter()->select();

        $select->from(array('gestion_proyectos'));
        $select->where('gestion_proyectos.control_economico= ?', 'CAPEX');
       
        if (!is_null($id))
        {
            $select->where("gestion_proyectos.id= ?", $id);
        } else{

            if ($values['id_zona'])
                $select->where('gestion_proyectos.id_zona= ?', $values['id_zona']);
                
            if ($values['anio'])
                $select->where('gestion_proyectos.anio= ?', $values['anio']); 
                
            if (is_numeric($values['aprobacion']))
                $select->where('gestion_proyectos.aprobacion= ?', $values['aprobacion']); 
                
            if ($values['categoria'])
                $select->where('gestion_proyectos.categoria= ?', $values['categoria']); 
                
            $select->order('id');
        }



        $rows = $this->getAdapter()->fetchAll($select);


        if (is_null($id))
            return $rows;
        else
            return $rows[0];


    }

}
